import {
	toast,
	filterData
} from "./public.js"


// this.$request("Login/checkLogin", {
// 	data: {
// 		loginName: this.loginName,
// 		loginPwd: this.loginPwd,
// 	}
// }).then(res => {
// 	consoloe.log(res)

// }).catch(res => {
// 				console.log("请求接口没有反应的时候")
// console.log('res'.res)
// 		})
//请求地址
// #ifdef H5
console.log("H5网页")
// export const url = "http://192.168.50.46"; // 公众号域名
export const url = "https://zuke.guochong.vip"; // 公众号域名
const API = process.env.NODE_ENV === 'development' ? '/api/Index/' : `${url}/Index/`; ///正式的服务器
//#endif
// #ifdef MP-ALIPAY
console.log("支付宝")
// 支付宝
// export const url = "https://zuke.guochong.vip";
export const url = "http://zl.sytywl.com";
const API = `${url}/Index/`; ///正式的服务器
//#endif

//#ifdef APP-PLUS
// 请求接口不需要做本地代理
console.log("手机APP")
export const url = "https://zuke.guochong.vip"; // app端正式域名
const API = `${url}/Index/`; ///正式的服务器
//#endif


//#ifdef MP-WEIXIN
// 请求接口不需要做本地代理
console.log("微信")
export const url = "https://zuke.guochong.vip"; // app端正式域名
const API = `${url}/Index/`; ///正式的服务器
//#endif

//暴露请求方法
export default {
	// 普通接口请求,使用post
	request: (name, {
		data = {} || [], //数据
		isLoad = true, //是否加载转圈
		isDelayThen = false, //是否延迟返回结果
		isFilter = true,
	} = {}) => new Promise((resolve, reject) => {
		//创建数据
		let $data = JSON.parse(JSON.stringify(data))
		//加载转圈
		if (isLoad) {
			uni.showLoading({
				mask: true
			});
		}
		//过滤undefined null数据
		if (isFilter) {
			$data = filterData($data)
		}
		//请求
		// console.log(API)
		uni.request({
			url: `${API}${name}`,
			method: "POST",
			sslVerify: false,
			data: $data,
			header: {
				'content-type': 'application/x-www-form-urlencoded',
				'token': uni.getStorageSync('zfbtoken'),
			},
			//成功
			success: (res) => {
				let title = res.data.info || res.data.msg
				if (Number(res.data.status) === 1) {
					if (title) {
						toast({
							icon: "success",
							title
						})
						if (isDelayThen) {
							setTimeout(() => {
								resolve(res.data)
							}, 1000)
							return
						}
					}
					resolve(res.data)
				} else if (res.data.status === -300 || res.data.status === -200) {
					// 错误处理，返回登录页
					uni.removeStorageSync('zfbtoken');
					uni.reLaunch({
						url: '/pages/index/index'
					})
				} else if (res.data.status == -1000) {
					// 错误处理，返回登录页
					toast({
						title
					})
					uni.removeStorageSync('zfbtoken')
					setTimeout(() => {
						uni.reLaunch({
							url: '/pages/login/login'
						})
					}, 10000)
					reject(res.data)
				} else if (res.data.status == -1) {
					// 错误处理，返回登录页
					console.log(res.data.status)
					if (title) {
						toast({
							title
						})
					} else {
						toast({
							title: "服务器繁忙"
						})
					}
					reject(res.data)
				} else {
					if (title) {
						toast({
							title
						})
					}
					reject(res.data)
				}
			},
			//失败
			fail: (res) => {
				toast({
					title: "网络错误"
				})
				reject(res)
			},
			//结束
			complete: (res) => {
				if (isLoad) {
					uni.hideLoading();
				}
			}
		});
	}),
	unique(arr) {
		const res = new Map();
		return arr.filter((arr) => !res.has(arr.targetId) && res.set(arr.targetId, 1));
	},
	//文件上传
	uploadFile: (methods, {
		name = "",
		filePath = "",
		files = [],
		formData = {}, //数据
		isLoad = true, //是否加载转圈
		isFilter = true,
		isFiles = false,
		isDelayThen = false, //是否延迟返回结果
	} = {}) => new Promise((resolve, reject) => {
		if (isFiles && files.length === 0) {
			toast({
				title: "请添加图片"
			})
			reject()
			return
		}
		//创建数据
		let $formData = JSON.parse(JSON.stringify(formData))
		//加载转圈
		if (isLoad) {
			uni.showLoading({
				mask: true
			});
		}
		//过滤undefined null数据
		if (isFilter) {
			$formData = filterData($formData)
		}
		let config = isFiles ? {
			files
		} : {
			name,
			filePath
		};
		uni.uploadFile({
			url: `${API}${methods}`,
			...config,
			formData: $formData,
			fileType: "image",   // 必填
			header: {
				'token': uni.getStorageSync('zfbtoken'),
			},
			//成功
			success: (res) => {
				res.data = JSON.parse(res.data)
				let title = res.data.info || res.data.msg
				if (Number(res.data.status) === 1) {
					if (title) {
						toast({
							icon: "success",
							title
						})
						if (isDelayThen) {
							setTimeout(() => {
								resolve(res.data)
							}, 1000)
							return
						}
					}
					resolve(res.data)
				} else {
					if (title) {
						toast({
							title
						})
					}
					reject(res.data)
				}
			},
			//失败
			fail: (res) => {
				toast({
					title: "网络错误"
				})
				reject(res)
			},
			//结束
			complete: (res) => {
				if (isLoad) {
					uni.hideLoading();
				}
			}
		});
	})
}
